package com.smart.community.region.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * 建筑类型基础分类DTO
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Data
public class BuildingTypeCategoryDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 分类ID
     */
    private Long id;

    /**
     * 父分类ID，0表示顶级分类
     */
    private Long parentId;

    /**
     * 分类名称
     */
    @NotBlank(message = "分类名称不能为空")
    @Size(min = 2, max = 100, message = "分类名称长度必须在2-100字符之间")
    private String categoryName;

    /**
     * 分类编码
     */
    @NotBlank(message = "分类编码不能为空")
    @Size(min = 2, max = 50, message = "分类编码长度必须在2-50字符之间")
    private String categoryCode;

    /**
     * 分类类型：DIVISION-划分方式，TYPE-具体类型
     */
    @NotBlank(message = "分类类型不能为空")
    private String categoryType;

    /**
     * 划分方式：PURPOSE-用途，STRUCTURE-结构，HEIGHT-高度，PROPERTY-产权，LAYOUT-户型，STYLE-风格
     */
    private String divisionType;

    /**
     * 分类描述
     */
    @Size(max = 500, message = "分类描述长度不能超过500字符")
    private String description;

    /**
     * 排序
     */
    private Integer sortOrder;

    /**
     * 状态：0-禁用，1-启用
     */
    @NotNull(message = "状态不能为空")
    private Integer status;

    /**
     * 备注
     */
    @Size(max = 500, message = "备注长度不能超过500字符")
    private String remark;
}
